///**
// *
// */
//package acmCoder.xiaomi;
//
//import java.math.BigInteger;
//import java.util.Scanner;
//
///**
// * @author zhongfang
// *
// */
//public class 求整数的阶乘 {
//	static BigInteger zero = new BigInteger("0");
//	static BigInteger one = new BigInteger("1");
//	static BigInteger two = new BigInteger("2");
//
//	private static BigInteger power(BigInteger base, BigInteger exp) {
//		BigInteger result = new BigInteger("1");
//		BigInteger baseTmp = new BigInteger(base.toString());
//		BigInteger expTmp = new BigInteger(exp.toString());
//		while (!expTmp.equals(zero)) {
//			if (expTmp.mod(two).equals(one))
//				result = result.multiply(baseTmp);
//
//			baseTmp = baseTmp.multiply(baseTmp);
//			expTmp = expTmp.divide(two);
//		}
//		return result;
//	}
//
//	private static BigInteger cn2(BigInteger n) {
//		BigInteger x = two..add(one);//(2^n+1)
//		BigInteger mask = (1 << n) - 1;
//		return (power(x, n) >> (n.divide(two)).multiply(n))) & mask;
//		power(x,n)>>(n>>1 *n)&mask
//	}
//
//	private static BigInteger factorial(BigInteger n) {
//		BigInteger temp;
//		if (n.equals(one))
//			return n;
//		else {
//			BigInteger half = n.divide(two);
//			temp = factorial(half);
//			return cn2(n).multiply(temp).multiply(temp);
//		}
//	}
//
//	private static BigInteger getRes(BigInteger input) {
//
//	}
//
//	/**
//	 * @param args
//	 */
//	public static void main(String[] args) {
//		Scanner scanner = new Scanner(System.in);
//		while (scanner.hasNext()) {
//			BigInteger input = new BigInteger(scanner.nextLine());
//			BigInteger res = new BigInteger("1");
//			for (BigInteger i = new BigInteger("2"); i.compareTo(input) != 0; i = i.add(one)) {
//				res = res.multiply(i);
//			}
//			res = res.multiply(input);
//			System.out.println(res);
//			// double input = scanner.nextLong();
//			// double res = 1;
//			// for (double i = 2; i <= input; i++) {
//			// res *= i;
//			// }
//			// System.out.println(String.format("%.0f", res));
//		}
//	}
//}
